import gradio as gr
import cv2
import numpy as np
from tabulate import tabulate 

# 定义预测函数，这个函数将用于Gradio接口进行预测
def image_prediction(image_input):
    # 调整输入图像的大小为28x28
    resized_image = cv2.resize(image_input, (28, 28))
    # 增加一个额外的维度，因为模型期望的输入是一个batch
    expanded_image = np.expand_dims(resized_image, axis=0)
    # 使用加载的模型进行预测
    prediction = loaded_model.predict(expanded_image)
    # 获取最可能的类别索引
    max_index = np.argmax(prediction)
    # 将索引转换为字符串形式进行返回
    return str(max_index)

# 创建Gradio接口，使用修改后的函数和参数名
app_interface = gr.Interface(
    fn=image_prediction,  # 使用修改后的函数名
    inputs='sketchpad',  # Gradio的sketchpad输入类型
    outputs='text',     # 输出类型为文本
    live=True           # 实时更新预测结果
)

# 启动Gradio接口，用户可以通过这个接口进行交互
app_interface.launch()